<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Update index alias API | ElasticSearch 7.7 权威指南中文版</title>
	<meta name="keywords" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <meta name="description" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
	<script>
	var _link = 'indices-aliases.html';
    </script>
</head>
<body>
<div class="main-container">
    <section id="content">
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.7/indices-aliases.html" rel="nofollow" target="_blank">https://www.elastic.co/guide/en/elasticsearch/reference/7.7/indices-aliases.html</a>, 原文档版权归 www.elastic.co 所有<br/>本地英文版地址: <a href="../en/indices-aliases.html" rel="nofollow" target="_blank">../en/indices-aliases.html</a></div>
                        <!-- start body -->
                  <div class="page_header">
<strong>重要</strong>: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html" rel="nofollow">当前版本文档</a>。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch Guide [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="rest-apis.html">REST APIs</a></span>
»
<span class="breadcrumb-link"><a href="indices.html">Index APIs</a></span>
»
<span class="breadcrumb-node">Update index alias API</span>
</div>
<div class="navheader">
<span class="prev">
<a href="unfreeze-index-api.html">« Unfreeze index API</a>
</span>
<span class="next">
<a href="indices-update-settings.html">Update index settings API »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="indices-aliases"></a>Update index alias API<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h2>
</div></div></div>

<p>Adds or removes index aliases.</p>
<p>An index alias is a secondary name
used to refer to one or more existing indices.</p>
<p>Most Elasticsearch APIs accept an index alias
in place of an index name.</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "twitter", "alias" : "alias1" } }
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1738.console"></div>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="indices-aliases-api-request"></a>Request<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h3>
</div></div></div>
<p><code class="literal">POST /_aliases</code></p>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="indices-aliases-api-desc"></a>Description<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h3>
</div></div></div>
<p>APIs in Elasticsearch accept an index name when working against a
specific index, and several indices when applicable. The index aliases
API allows aliasing an index with a name, with all APIs automatically
converting the alias name to the actual index name. An alias can also be
mapped to more than one index, and when specifying it, the alias will
automatically expand to the aliased indices. An alias can also be
associated with a filter that will automatically be applied when
searching, and routing values. An alias cannot have the same name as an index.</p>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="indices-aliases-api-query-params"></a>Query parameters<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h3>
</div></div></div>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">master_timeout</code>
</span>
</dt>
<dd>
(Optional, <a class="xref" href="common-options.html#time-units" title="Time units">time units</a>) Specifies the period of time to wait for
a connection to the master node. If no response is received before the timeout
expires, the request fails and returns an error. Defaults to <code class="literal">30s</code>.
</dd>
<dt>
<span class="term">
<code class="literal">timeout</code>
</span>
</dt>
<dd>
(Optional, <a class="xref" href="common-options.html#time-units" title="Time units">time units</a>) Specifies the period of time to wait for
a response. If no response is received before the timeout expires, the request
fails and returns an error. Defaults to <code class="literal">30s</code>.
</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="indices-aliases-api-request-body"></a>Request body<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h3>
</div></div></div>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">actions</code>
</span>
</dt>
<dd>
<p>(Required, array of actions)
Set of actions to perform.
Valid actions include:</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">add</code>
</span>
</dt>
<dd>
Adds an alias to an index.
</dd>
<dt>
<span class="term">
<code class="literal">remove</code>
</span>
</dt>
<dd>
Removes an alias from an index.
</dd>
<dt>
<span class="term">
<code class="literal">remove_index</code>
</span>
</dt>
<dd>
Deletes an index or index alias,
like the <a class="xref" href="indices-delete-index.html" title="Delete index API">delete index API</a>.
</dd>
</dl>
</div>
<p>You can perform these actions on alias objects.
Valid parameters for alias objects include:</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">index</code>
</span>
</dt>
<dd>
<p>
(String)
Wildcard expression of index names
used to perform the action.
</p>
<p>If the <code class="literal">indices</code> parameter is not specified,
this parameter is required.</p>
</dd>
<dt>
<span class="term">
<code class="literal">indices</code>
</span>
</dt>
<dd>
<p>
(Array)
Array of index names
used to perform the action.
</p>
<p>If the <code class="literal">index</code> parameter is not specified,
this parameter is required.</p>
</dd>
<dt>
<span class="term">
<code class="literal">alias</code>
</span>
</dt>
<dd>
<p>
(String)
Comma-separated list or wildcard expression of index alias names to
add, remove, or delete.
</p>
<p>If the <code class="literal">aliases</code> parameter is not specified,
this parameter is required for the <code class="literal">add</code> or <code class="literal">remove</code> action.</p>
</dd>
<dt>
<span class="term">
<code class="literal">aliases</code>
</span>
</dt>
<dd>
<p>
(Array of strings)
Array of index alias names to
add, remove, or delete.
</p>
<p>If the <code class="literal">alias</code> parameter is not specified,
this parameter is required for the <code class="literal">add</code> or <code class="literal">remove</code> action.</p>
</dd>
<dt>
<span class="term">
<code class="literal">filter</code>
</span>
</dt>
<dd>
<p>
(Optional, query object)
<a class="xref" href="query-dsl-bool-query.html" title="Boolean query">Filter query</a>
used to limit the index alias.
</p>
<p>If specified,
the index alias only applies to documents returned by the filter.
<a class="xref" href="query-dsl-bool-query.html" title="Boolean query">Filter query</a>
used to limit the index alias.</p>
<p>If specified,
the index alias only applies to documents returned by the filter.</p>
<p>See <a class="xref" href="indices-aliases.html#filtered" title="Filtered aliases">Filtered aliases</a> for an example.</p>
</dd>
<dt>
<span class="term">
<code class="literal">is_hidden</code>
</span>
</dt>
<dd>
(Optional, boolean)
If <code class="literal">true</code>, the alias will be excluded from wildcard expressions by default,
unless overriden in the request using the <code class="literal">expand_wildcards</code> parameter,
similar to <a class="xref" href="index-modules.html#index-hidden">hidden indices</a>. This property must be set to the
same value on all indices that share an alias. Defaults to <code class="literal">false</code>.
</dd>
<dt>
<span class="term">
<code class="literal">is_write_index</code>
</span>
</dt>
<dd>
<p>
(Optional, boolean)
If <code class="literal">true</code>, assigns the index as an alias’s write index.
Defaults to <code class="literal">false</code>.
</p>
<p>An alias can have one write index at a time.</p>
<p>See <a class="xref" href="indices-aliases.html#aliases-write-index" title="Write index">Write index</a> for an example.</p>
<div class="important admon">
<div class="icon"></div>
<div class="admon_content">
<p>Aliases that do not explicitly set <code class="literal">is_write_index: true</code> for an index, and
only reference one index, will have that referenced index behave as if it is the write index
until an additional index is referenced. At that point, there will be no write index and
writes will be rejected.</p>
</div>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">routing</code>
</span>
</dt>
<dd>
<p>
(Optional, string)
Custom <a class="xref" href="mapping-routing-field.html" title="_routing field">routing value</a>
used to route operations to a specific shard.
</p>
<p>See <a class="xref" href="indices-aliases.html#aliases-routing" title="Routing">Routing</a> for an example.</p>
</dd>
<dt>
<span class="term">
<code class="literal">index_routing</code>
</span>
</dt>
<dd>
<p>
(Optional, string)
Custom <a class="xref" href="mapping-routing-field.html" title="_routing field">routing value</a> used
for the alias’s indexing operations.
</p>
<p>See <a class="xref" href="indices-aliases.html#aliases-routing" title="Routing">Routing</a> for an example.</p>
</dd>
<dt>
<span class="term">
<code class="literal">search_routing</code>
</span>
</dt>
<dd>
<p>
(Optional, string)
Custom <a class="xref" href="mapping-routing-field.html" title="_routing field">routing value</a> used
for the alias’s search operations.
</p>
<p>See <a class="xref" href="indices-aliases.html#aliases-routing" title="Routing">Routing</a> for an example.</p>
</dd>
</dl>
</div>
</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="indices-aliases-api-example"></a>Examples<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h3>
</div></div></div>
<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="indices-aliases-api-add-alias-ex"></a>Add an alias<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h4>
</div></div></div>
<p>The following request adds the <code class="literal">alias1</code> alias to the <code class="literal">test1</code> index.</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "test1", "alias" : "alias1" } }
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1739.console"></div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="indices-aliases-api-remove-alias-ex"></a>Remove an alias<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h4>
</div></div></div>
<p>The following request removes the <code class="literal">alias1</code> alias.</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /_aliases
{
    "actions" : [
        { "remove" : { "index" : "test1", "alias" : "alias1" } }
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1740.console"></div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="indices-aliases-api-rename-alias-ex"></a>Rename an alias<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h4>
</div></div></div>
<p>Renaming an alias is a simple <code class="literal">remove</code> then <code class="literal">add</code> operation within the
same API. This operation is atomic, no need to worry about a short
period of time where the alias does not point to an index:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /_aliases
{
    "actions" : [
        { "remove" : { "index" : "test1", "alias" : "alias1" } },
        { "add" : { "index" : "test1", "alias" : "alias2" } }
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1741.console"></div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="indices-aliases-api-add-multi-alias-ex"></a>Add an alias to multiple indices<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h4>
</div></div></div>
<p>Associating an alias with more than one index is simply several <code class="literal">add</code>
actions:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "test1", "alias" : "alias1" } },
        { "add" : { "index" : "test2", "alias" : "alias1" } }
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1742.console"></div>
<p>Multiple indices can be specified for an action with the <code class="literal">indices</code> array syntax:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /_aliases
{
    "actions" : [
        { "add" : { "indices" : ["test1", "test2"], "alias" : "alias1" } }
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1743.console"></div>
<p>To specify multiple aliases in one action, the corresponding <code class="literal">aliases</code> array
syntax exists as well.</p>
<p>For the example above, a glob pattern can also be used to associate an alias to
more than one index that share a common name:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "test*", "alias" : "all_test_indices" } }
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1744.console"></div>
<p>In this case, the alias is a point-in-time alias that will group all
current indices that match, it will not automatically update as new
indices that match this pattern are added/removed.</p>
<p>It is an error to index to an alias which points to more than one index.</p>
<p>It is also possible to swap an index with an alias in one, atomic operation.
This means there will be no period of downtime where the alias points to no
index.</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT test     <a id="CO583-1"></a><i class="conum" data-value="1"></i>
PUT test_2   <a id="CO583-2"></a><i class="conum" data-value="2"></i>
POST /_aliases
{
    "actions" : [
        { "add":  { "index": "test_2", "alias": "test" } },
        { "remove_index": { "index": "test" } }  <a id="CO583-3"></a><i class="conum" data-value="3"></i>
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1745.console"></div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO583-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>An index we’ve added by mistake</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO583-2"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p>The index we should have added</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO583-3"><i class="conum" data-value="3"></i></a></p>
</td>
<td align="left" valign="top">
<p><code class="literal">remove_index</code> is just like <a class="xref" href="indices-delete-index.html" title="Delete index API">Delete index</a></p>
</td>
</tr>
</table>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="filtered"></a>Filtered aliases<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h4>
</div></div></div>
<p>Aliases with filters provide an easy way to create different "views" of
the same index. The filter can be defined using Query DSL and is applied
to all Search, Count, Delete By Query and More Like This operations with
this alias.</p>
<p>To create a filtered alias, first we need to ensure that the fields already
exist in the mapping:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT /test1
{
  "mappings": {
    "properties": {
      "user" : {
        "type": "keyword"
      }
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1746.console"></div>
<p>Now we can create an alias that uses a filter on field <code class="literal">user</code>:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test1",
                 "alias" : "alias2",
                 "filter" : { "term" : { "user" : "kimchy" } }
            }
        }
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1747.console"></div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="aliases-routing"></a>Routing<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h4>
</div></div></div>
<p>It is possible to associate routing values with aliases. This feature
can be used together with filtering aliases in order to avoid
unnecessary shard operations.</p>
<p>The following command creates a new alias <code class="literal">alias1</code> that points to index
<code class="literal">test</code>. After <code class="literal">alias1</code> is created, all operations with this alias are
automatically modified to use value <code class="literal">1</code> for routing:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test",
                 "alias" : "alias1",
                 "routing" : "1"
            }
        }
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1748.console"></div>
<p>It’s also possible to specify different routing values for searching
and indexing operations:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test",
                 "alias" : "alias2",
                 "search_routing" : "1,2",
                 "index_routing" : "2"
            }
        }
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1749.console"></div>
<p>As shown in the example above, search routing may contain several values
separated by comma. Index routing can contain only a single value.</p>
<p>If a search operation that uses routing alias also has a routing parameter, an
intersection of both search alias routing and routing specified in the
parameter is used. For example the following command will use "2" as a
routing value:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET /alias2/_search?q=user:kimchy&amp;routing=2,3</pre>
</div>
<div class="console_widget" data-snippet="snippets/1750.console"></div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="aliases-write-index"></a>Write index<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/indices/aliases.asciidoc">edit</a>
</h4>
</div></div></div>
<p>It is possible to associate the index pointed to by an alias as the write index.
When specified, all index and update requests against an alias that point to multiple
indices will attempt to resolve to the one index that is the write index.
Only one index per alias can be assigned to be the write index at a time. If no write index is specified
and there are multiple indices referenced by an alias, then writes will not be allowed.</p>
<p>It is possible to specify an index associated with an alias as a write index using both the aliases API
and index creation API.</p>
<p>Setting an index to be the write index with an alias also affects how the alias is manipulated during
Rollover (see <a class="xref" href="indices-rollover-index.html" title="Rollover index API">Rollover With Write Index</a>).</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test",
                 "alias" : "alias1",
                 "is_write_index" : true
            }
        },
        {
            "add" : {
                 "index" : "test2",
                 "alias" : "alias1"
            }
        }
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1751.console"></div>
<p>In this example, we associate the alias <code class="literal">alias1</code> to both <code class="literal">test</code> and <code class="literal">test2</code>, where
<code class="literal">test</code> will be the index chosen for writing to.</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT /alias1/_doc/1
{
    "foo": "bar"
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1752.console"></div>
<p>The new document that was indexed to <code class="literal">/alias1/_doc/1</code> will be indexed as if it were
<code class="literal">/test/_doc/1</code>.</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET /test/_doc/1</pre>
</div>
<div class="console_widget" data-snippet="snippets/1753.console"></div>
<p>To swap which index is the write index for an alias, the Aliases API can be leveraged to
do an atomic swap. The swap is not dependent on the ordering of the actions.</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test",
                 "alias" : "alias1",
                 "is_write_index" : false
            }
        }, {
            "add" : {
                 "index" : "test2",
                 "alias" : "alias1",
                 "is_write_index" : true
            }
        }
    ]
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1754.console"></div>
</div>

</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="unfreeze-index-api.html">« Unfreeze index API</a>
</span>
<span class="next">
<a href="indices-update-settings.html">Update index settings API »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>